<?php

namespace Seguridad\Controller;

use Seguridad\Controller\GenericController;
use Componentes\Controller\UtilsArrayController;
use Seguridad\Model\Entity\BitacoraGeneral;
use DateTime;
use DateTimeZone;

class BitacoraGeneralController extends GenericController {

    public function __construct() {
        
    }

    public function get($id) {
        /*
         * Datos del bitacora COMPLETO (con el grupo)
         * Ej: http://localhost/UptaebBackend/public/seguridad/bitacora/1
         * Rsp: {"success":true,"data":[{"id":1,"login":"07443224","password":"123","estado":1,"_grupo":{"id":1,"nombre":"Estudiante","detalle":"Estudiantes activos"}}],"total":1}
         */
        $id = $this->params()->fromRoute('id');
        $output = $this->getBitacoraGeneralService()->getRegistro($id);
        return $this->convertirArrayAJson($output);
    }

    /**
     * Return list of resources
     * @return mixed
     */
    public function getList($id = 1, $param1 = 1, $param2 = 1, $param3 = 1) {
        $id = $this->params()->fromRoute('id');
        $param1 = $this->params()->fromRoute('param1');
        $data = null;
        $mensaje = "Defaul";
        switch ($id) {
            case (0):
                /*
                 * Datos del bitacora sin los objetos foraneos (con el id del grupo)
                 * Ej: http://localhost/UptaebBackend/public/seguridad/bitacora/0/1
                 * Rsp: {"success":true,"data":[{"id":1,"login":"07443224","password":"123","estado":1,"_grupo":{"id":1,"nombre":"Estudiante","detalle":"Estudiantes activos"}}],"total":1}
                 */
                $id = $this->params()->fromRoute('param1');
                $output = $this->getBitacoraGeneralService()->getRegistro($id);
                break;
            case (1):
                /*
                 * Siguiente id
                 * Ej: http://localhost/UptaebBackend/public/seguridad/bitacora/0/1
                 * Rsp: {"success":true,"data":[{"id":1,"login":"07443224","password":"123","estado":1,"_grupo":{"id":1,"nombre":"Estudiante","detalle":"Estudiantes activos"}}],"total":1}
                 */
                $id = $this->params()->fromRoute('param1');
                $output = $this->getBitacoraGeneralService()->obtenerSiguienteId();
                break;
            default:
                return $param1;
        }
        return $this->convertirArrayAJson($output);
    }

    /**
     * Create a new resource
     * @param  mixed $data
     * @return mixed
     * Ruta: http://localhost/UptaebBackend/public/seguridad/bitacora/@idUsuario/@idNodo/@detalle/@otro
     * Ej: http://localhost/UptaebBackend/public/seguridad/bitacora/1/1/Click_boton_de_inicio_de_sesion/null
     */
    public function create($data) {
        $idUsuario = $this->params()->fromRoute('id');
        $idNodo = $this->params()->fromRoute('param1');
        $detalleParam = $this->params()->fromRoute('param2');
        $otro = $this->params()->fromRoute('param3');
        // Guardar el registro
        $bitacora = new BitacoraGeneral;
        $bitacora->setId(0);
        $bitacora->setUsuario($idUsuario);
        $bitacora->setNodo($idNodo);
        //$detalle = str_replace(_, ' ', $detalleParam);
        $bitacora->setDetalle($detalleParam);
        $bitacora->setOtro($otro);
        $fechaNow = new DateTime("now", new DateTimeZone('America/Caracas'));
        //echo 'Bitacora: '.$horaNow;
        $fecha = $fechaNow->format('Y-m-d H:i:s');
        $bitacora->setFecha($fecha);
        $data = $bitacora->objectToArrayBD();
        $result = $this->getBitacoraGeneralService()->createRegistro($data);
        $response = $this->getResponseWithHeader();
        $response->setContent($result);
        return $response;
    }

}
